import Vue from "vue";
import Vuex from "vuex";
import createPersistedState from "vuex-persistedstate";
Vue.use(Vuex);

// persisted持久化
// 下载引入配置
// 配置项：
// -key：指定持久化的名字，默认的名字是vuex
// -storage：选用一种持久化方案，默认是本地存储
// reducer：用于指定哪些属性需要持久化，不指定reducer，默认vuex所有的数据都会被持久化
// reducer是一个函数，这个函数必须返回一个对象，这个对象就会被持久化，这个函数的参数是state
export default new Vuex.Store({
  plugins: [
    createPersistedState({
      key: "HEIMA_TOUTIAO",
      // storage: window.sessionStorage,
      reducer({ tokenObj, myChannel, histories }) {
        return { tokenObj, myChannel, histories };
      }
    })
  ],
  state: {
    tokenObj: {},
    myChannel: [],
    histories: []
  },
  getters: {
    // 判断有没有token，！！表示把数据转换为Boolean
    isLogin(state) {
      return !!state.tokenObj.token;
    }
  },
  mutations: {
    SET_TOKEN(state, tokenObj) {
      state.tokenObj = tokenObj;
    },
    SET_MY_CHANNELS(state, channels) {
      state.myChannel = channels;
    },
    // 更新后的历史数据
    SET_HISTORIES(state, histories) {
      state.histories = histories;
    }
  },
  actions: {},
  modules: {}
});
